The disclosure relates generally to peripheral component interconnect devices within a virtualization context, and more specifically, to deployment and migration of a virtual server that utilizes peripheral component interconnect devices while retaining a configuration.
In general, a virtual server is deployed in a node of a cluster environment and utilizes peripheral component interconnect (PCI) devices of the node. Each PCI device includes physical and/or virtual PCI functions that are typically identified by routing identifications (e.g., plugging positions and/or function-type-specific identifiers). A configuration of the virtual server is utilized to associate the routing identifications of each PCI function with a function definition, so that the PCI function may be accessed via the routing identifications by the virtual server through the associated function definitions. Thus, when the virtual server is deployed or migrated between nodes of the cluster environment, the configuration must be altered to accommodate routing identifications of a subsequent node. Yet, altering the configuration every time the virtual server is deployed or moved causes time delays in server deployment and consumption of cluster environment resources, which are a hindrance to the flexibility of virtualization.
For example, in a virtualized server environment, a PCI device (e.g., adapters, PCI hardware resources, and other devices) of a node is shared among multiple virtual servers within that node via PCI Express (PCIe) and Single-root I/O virtualization (SR-IOV). PCIe is an interface for attaching the PCI device to a central processor complex of the node. SR-IOV is utilized to extend PCIe by providing support for a significant number of PCI functions within the PCI device. That is, SR-IOV allows PCI functions of the PCI device, as defined by PCIe, to consist of a single physical function (PF), associated with multiple virtual functions (VFs). A PF is a PCIe function that is privileged and is used to manage characteristics of the virtual functions. A VF is a PCIe function associated with a PF, and is directly accessible by a virtual server. The VFs may be serially shared (reused) by multiple virtual servers. PF and VFs are assigned a routing identification (RID) as defined by PCIe to uniquely identify the PF or VF and control access to each virtual server.
Continuing, when defining or configuring a virtual server of the multiple virtual servers, that virtual server's definition or configuration may contain multiple virtual PCI function definitions. Each virtual PCI function definition serves a particular purpose (such as providing access to a specific type of PCI adapter or device, providing access to a particular physical communication network, and providing access to a particular storage area network or zone thereof); and the virtual server's virtual PCI function definitions are assigned to (or associated with) the routing identifications when the virtual server is deployed on the node (e.g., a particular physical server). Yet, because the configuration of the virtual server directly relies on the routing identifications, the configuration must be altered every time the server is deployed (e.g., cloned) or migrated due to the limitations of the routing identifications.
In particular, an identification scheme may utilize media access control (MAC) addresses, Fibre Channel (FC) addresses, system-wide function identifications (FIDs), and physical network identifications (PNIDs) as routing identifications. The MAC address scheme is limited to only network card PCI devices and only applies tracking the network card being moved between different slots. Additionally, the MAC address scheme has no application for moving virtual servers (e.g., does not support cloning, as each virtual server must use different MAC addresses). Similarly, the FC address scheme is limited to only FC adapter card PCI devices and includes similar issues as specified for the MAC addresses. Further, the FID scheme is limited by an FID being permitted to have a singular use. In turn, cloning or moving a virtual server is impossible when the same FID is utilized within the same or subsequent node. Furthermore, the PNIDs scheme includes the problem of only supporting network PCI functions and does not support when multiple PCI functions need to be connected to the same network (e.g., for redundancy or throughput configurations).
Therefore, when flexibly deploying (e.g., cloning) or migrating virtual servers in a cluster environment, dynamically assigning/associating the PF and VFs to the corresponding function definitions of the virtual servers is a problem due to the limitations of different routing identifications schemes.